Javascript y mates en un par de proyectos con fines educativos

Hace un par de días comentaba que estaba trabajando en un prototipo de aplicación web. La verdad es que la prueba de concepto ha sido un éxito y ha gustado, pese a lo precario de la implementación y a que el prototipo tiene detalles que habría que pulir.



Hoy he estado hablando con alguien con el que tengo una gran sintonía en éste tema (entre muchos otros). Nuestra idea es construir un "centro de formación" que proporcione a profesores y alumnos una herramienta para aprender de forma conjunta.

La idea es construir una web en modelo de "autoservicio", donde el alumno pueda seguir el itinerario marcado por el profesor, a su propio ritmo (un poco en la línea de CodeAcademy, pero para las matemáticas). Otra comparación que hemos utilizado en la conversación de esta mañana ha sido la de un "elige tu propia aventura", pero en versión de aprendizaje.

En cualquier caso, un primer pequeño paso en la dirección correcta. Si quieres, puedes probarla en: 


Uno de los detalles que para mí resultan clave es el poder mostrar una solución paso a paso... Wolfram Alpha o MathWay proporcionan estas soluciones en sus modelos de pago.

En este prototipo los pasos están hardcodeados, es decir, escritos de forma fija en el código; para cada ejercicio sólo se actualizan los coeficientes.

También he estado haciendo pruebas para buscar una forma diferente de mostrar estas operaciones de forma que sean lo más lógicas posibles para el alumno. Quizás la manera más sencilla sea mediante animaciones (de los términos pasando de un lado a otro, o llevándote unidades al sumar, por ejemplo). He probado D3 -que es realmente potente- aunque no he tenido tiempo mas que de rascar la superficie de esta increíble biblioteca de funciones. Está muy enfocada a la representación gráfica de datos y hay que pensar de una cierta manera a la hora de crear los nodos, asignarle datos, etc, cosa que no encaja del todo bien con mi idea inicial... Debo dedicarle más tiempo, así que ya veremos qué dirección tomo con respecto al tema de las visualizaciones.

Hablando de visualizaciones... para simplificar la creación del prototipo (y evitar depender de la conexión a internet) he dejado esta representación en "modo texto", sin entrar en utilizar MathJax. Desgraciadamente hace que la representación de las ecuaciones matemáticas quede "fea", al tener que restringirme a utilizar las etiquetas HTML sub  y sup para poder representar los sub y superíndices...

Otro pequeño pasito adelante...

Aunque me he quedado sin tiempo este fin de semana, ya estoy trabajando en el siguiente paso: la creación de una biblioteca de funciones en Javascript para manipular polinomios.

Ayer tenía las bases para poder representar polinomios de cualquier grado. Sin embargo, hoy he visto que sería mucho mejor almacenar los coeficientes de cada monomio en la posición de un array que coincida con el grado del monomio, de cara a poder manipularlos con mayor agilidad. Así que he tenido que re-escribir de nuevo gran parte del código.

La verdad es que después del cambio creo que la base es más sólida. He estado puliendo detalles de manera que la introducción de los polinomios sea sencilla y flexible. A la hora de realizar operaciones  se comprueba que los datos introducidos sean realmente polinomios, lo que evita errores.

En cuanto a la representación de los polinomios -de momento, sólo en la consola del navegador- no se muestran los términos innecesarios: los términos independientes con valor cero, o los  números "1" cuando se encuentran como exponente o como coeficiente de un monomio. Son pequeños detalles, sí, pero es ahí es donde se marcan las diferencias. En cualquier caso, así la representación de los polinomios resulta más natural.


He elegido los polinomios porque son sobre lo que estoy impartiendo unas clases particulares en este momento. Además, disponer de las herramientas para trabajar de forma ágil con polinomios permite reutilizar grandes partes del código para otras herramientas similares... Por ejemplo, vectores (de cualquier dimensión).

En cuanto a los polinomios, la derivación e integración de polinomios es directa. Cualquier función puede representarse de forma polinómica -mediante Series de Taylor-, así que pueden darme bastante juego.

En cualquier caso, hasta aquí el avance de estos weekend project.

Comentarios